from rest_framework.response import Response
from rest_framework.views import exception_handler
from rest_framework import status
from django.db import DatabaseError
import logging
logger=logging.getLogger('django')

def customer_excepotion_handler(exec,context):
    '''
    自定义异常处理类
    :param exec: 异常类
    :param context: 异常类的上线文
    :return: Response对象
    '''
    #调用drf框架原生的异常处理方法
    response=exception_handler(exec,context)
    if response is None:
        view=context['view']
        if isinstance(exec,DatabaseError):
            #数据库异常
            logger.error('{} {}'.format(view,exec))
            return Response({'message':'服务器内部错误'},status=status.HTTP_507_INSUFFICIENT_STORAGE)

    return response
